package org.itydl.game.model

/**
 * 墙、草坪、水、坦克都是绘制到窗体上的，公共：位置参数、自身宽高、行为（例如：绘制功能）
 * 抽取公共的接口
 */
interface View {
    // Kotlin中可以定义属性让实现类去实现（Java中不可以）

    // 位置参数,接口中是常量，在实现类里面可以是var变量
    val x: Int
    val y: Int

    // 视图宽高
    val width: Int
    val height: Int

    /**
     * 行为,绘制
     * 该接口在 GameWindow 的 onDisplay() 方法中不断的刷新调用的
     */
    fun draw()

    /**
     * 检测碰撞功能基本上所有的组件都具备
     * 1：移动能力；2：阻挡能力
     */
    fun checkCollection(x1: Int, y1: Int, w1: Int, h1: Int, x2: Int, y2: Int, w2: Int, h2: Int): Boolean {
        return when {
            y2 + h2 <= y1 -> // 阻挡块在移动物的上面
                false
            y1 + h1 <= y2 -> // 阻挡块在移动物的下面
                false
            x2 + w2 <= x1 -> // 阻挡块在移动物的左面
                false
            x1 + w1 <= x2 -> // 阻挡块在移动物的右面
                false
            else -> true
        }
    }
}